package com.itheima.day2.currying;

import java.util.ArrayList;
import java.util.List;
import java.util.function.Function;

public class Carrying1Demo {

    interface Fx {
        Fy op(List<Integer> a);
    }

    interface Fy {
        Fz op(List<Integer> b);
    }

    interface Fz {
        List<Integer> op(List<Integer> c);
    }

    public static void main(String[] args) {

        // 测试数据
        List<Integer> list1 = List.of(1, 2);
        List<Integer> list2 = List.of(3, 4);
        List<Integer> list3 = List.of(5, 6);


        Fx fx = a -> b -> c -> {
            List<Integer> list = new ArrayList<>();
            list.addAll(a);
            list.addAll(b);
            list.addAll(c);
            return list;
        };
        Fy fy = fx.op(list1);
        Fz fz = fy.op(list2);
        List<Integer> result1 = fz.op(list3);
        System.out.println(result1);

        Function<List<Integer>,
                Function<List<Integer>,
                        Function<List<Integer>, List<Integer>>>> adder =
                a -> b -> c -> {
                    List<Integer> result = new ArrayList<>();
                    result.addAll(a);
                    result.addAll(b);
                    result.addAll(c);
                    return result;
                };

        // 调用
        List<Integer> result2 = adder.apply(list1).apply(list2).apply(list3);

        System.out.println(result2);
    }
}
